home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / doors / aeshell / aeshell.c next >
Encoding:
C/C++ Source or Header  |  1992-12-26  |  3.5 KB  |  187 lines

  1. #include <exec/exec.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include "dh1:source/doors/romconf/doorheader.h"
  5. #include "dh0:code/aelib/ae_pragmas.h"
  6. extern struct Library *AEBase;
  7. int LastPos(char *c,char *s);
  8. int Words(char *s);
  9. char *Strip(char *s);
  10. char *Parse(char *s,int which);
  11. void LastCommand(void);
  12. void end(void);
  13. char PASSWORD[200];
  14. char Local[200];
  15. char Shell_Password[200];
  16. char Dir[200];
  17. char PASS[200];
  18. char CliPrompt[200];
  19. char temp[200];
  20. char USER[200];
  21. #define sr StripReturn
  22. int K;
  23. int POS;
  24. FILE *fi;
  25.  
  26. #define sm sendmessage
  27. #define tr(x) sm(x,1)
  28. #define hk hotkey
  29. #define pm prompt
  30. #define sendstring sendmessage
  31. #define gu getuserstring
  32. #define NOT_EXISTS(x,y) if(!myexists(x,y))
  33. #define ss(x) sendmessage(x,0)
  34. main(int argc,char *argv[])
  35. {
  36.    FILE *fi;
  37.    int nd;
  38.    char image[200];
  39.    PASSWORD[1]='\0';
  40.    if(argc!=2)
  41.    {
  42.      printf("\n");
  43.      printf("/X Shell version 1.0, written by Joseph Hodge\n");
  44.      printf("This is a (XIM) for AmiExpress 2.08+\n");
  45.      printf("\n");
  46.      exit(0);
  47.    }
  48.    Register(argv[1][0]-'0');
  49.    nd=argv[1][0]-'0';
  50.    strcpy(Local,"DOORS:AESHELL/");
  51.    gu(USER,DT_NAME);
  52.    gu(Dir,BB_LOCAL);
  53.    strcpy(Shell_Password,"AIDAN");
  54.    tr(" ");
  55.    ss("Enter Remote Shell Password: ");
  56.    strcpy(PASS,"");
  57.    POS=1;
  58.    while(PASSWORD[0]!=13)
  59.    {
  60.       hk("",PASSWORD);
  61.       if(PASSWORD[0]=='\b')
  62.       {
  63.         if(POS>1)
  64.         {
  65.            ss ("\b \b"); POS=POS-1; PASS[POS-1]='\0';
  66.         }
  67.         else strcpy(PASS,"");
  68.       }
  69.       if(PASSWORD[0]!=13 && PASSWORD[0]!='\b')
  70.       {
  71.          ss("X");
  72.          strcat(PASS,PASSWORD);
  73.          POS +=1;
  74.       }
  75.    }
  76.    tr("");
  77.    if(strcmp(Shell_Password,PASS))
  78.    {
  79.      tr("");
  80.      tr("Remote Password failed");
  81.      ShutDown();
  82.      end();
  83.    }
  84.    tr("");
  85.    sprintf(image,"Searching for %s ",USER);
  86.    ss(image);
  87.    for(K=1;K<7;K++)
  88.    {
  89.      Delay(40L);ss("  . ");
  90.    }
  91.    ss("Access Granted");
  92.    SetCurrentDirName(Dir);
  93.    sprintf(CliPrompt,"%s>",Dir);
  94.    while(1)
  95.    {
  96.      pm(CliPrompt,temp,190);
  97.      strupr(temp);
  98.      strcpy(image,Strip(temp));
  99.      if(image[0]=='\0') continue;
  100.      sprintf(temp,"%s >%sNode%d/Work/ShellOutPut.txt",image,Dir,nd);
  101.      strcpy(image,temp);
  102.      if(!strncmp(image,"ENDCLI",6)) { tr(""); break; }
  103.      Execute(image,NULL,NULL);
  104.      GetCurrentDirName(image,200L);
  105.      sprintf(temp,"%sNode%d/Work/ShellOutPut",Dir,nd);
  106.      showgfile(temp);
  107.      sprintf(CliPrompt,"%s>",image);
  108.    }
  109.  
  110.    ShutDown();
  111.    end();
  112. }
  113. void LastCommand(void)
  114. {
  115. }
  116. void end(void)
  117. {
  118.   exit(0);
  119. }
  120. char *Parse(char *s,int which)
  121. {
  122.    char Cmd[200];
  123.    char *p;
  124.    register int i;
  125.    strcpy(Cmd,s);
  126.    sr(Cmd);
  127.    i=0;
  128.    p=&Cmd[0];
  129.    while(which)
  130.    {
  131.      if(Cmd[i]==' ' || Cmd[i]=='\0')
  132.      {
  133.         which--;
  134.         if(!which)
  135.         {
  136.            return(p);
  137.         }
  138.         else 
  139.         {
  140.           if(Cmd[i]!='\0')
  141.           {
  142.             p=&Cmd[i+1];
  143.           }
  144.         }
  145.         Cmd[i]='\0';
  146.      }
  147.      i++;
  148.    }
  149.    strcpy(Cmd,"");
  150.    return(Cmd);
  151. }        
  152. char *Strip(char *s)
  153. {
  154.   char Cmd[200];
  155.   register int i;
  156.   char *p;
  157.   sr(s);
  158.   p=s;
  159.   i=0;
  160.   while(*(s+i)==' ') { p++; i++; }
  161.   return(p);
  162. }
  163. int Words(char *s)
  164. {
  165.   register int i;
  166.   register int j;
  167.   j=0;
  168.   i=0;
  169.   while(*(s+i)!='\0')
  170.   {
  171.     if(*(s+i)==' ') j++;
  172.   }
  173.   return(j);
  174. }
  175. int LastPos(char *c,char *s)
  176. {
  177.   register int i;
  178.   register int j;
  179.   j=0;
  180.   i=strlen(s)-1;
  181.   while(i)
  182.   {
  183.     if(!strncmp(s+i,c,strlen(c))) { j=i; break; }
  184.     i--;
  185.   }
  186.   return(j);
  187. }